#include <iostream>

using namespace std;

const int N = 1e5 + 10;

int h, ne[N], pre[N];
bool st[N]; // 标记元素是否已经被删除

int main()
{
	int n; cin >> n;

	// 初始化
	pre[1] = h;
	ne[h] = 1;

	for(int i = 2; i <= n; i++)
	{
		int k, p; cin >> k >> p;
		//插入
		if(p == 0) // i放在k前面
		{
			ne[i] = k;
			pre[i] = pre[k];

			ne[pre[k]] = i;
			pre[k] = i;
		}
		else if(p == 1) // i放在k后面
		{
			ne[i] = ne[k];
			pre[i] = k;

			pre[ne[k]] = i;
			ne[k] = i;
		}
	}

	int m; cin >> m;
	while(m--)
	{
		int x; cin >> x;

		//删除x
		if(!st[x])
		{
			pre[ne[x]] = pre[x];
			ne[pre[x]] = ne[x];
			st[x] = true;
		}
	}

	//输出
	for(int i = ne[h]; i; i = ne[i])
	{
		cout << i << " ";
	}


	return 0;
}